package com.example.sandbox.dto;

import java.util.Arrays;
import java.util.List;

/**
 * @Description Constants 常量对象
 */
public class CS {

    /**
     * 系统类型定义
     **/
    public interface SYS_TYPE {
        String MCH = "MCH";
        String MGR = "MGR";
    }

    /**
     * 账号类型:1-商户 2-代理商 3-服务商 4-商户应用 5-平台
     */
    public static final byte INFO_TYPE_MCH = 1;
    public static final byte INFO_TYPE_AGENT = 2;
    public static final byte INFO_TYPE_ISV = 3;
    public static final byte INFO_TYPE_MCH_APP = 4;
    public static final byte INFO_TYPE_PLAT = 5;

    /**
     * yes or no
     **/
    public static final byte NO = 0;
    public static final byte YES = 1;

    /**
     * available or disable
     **/
    public static final byte AVAILABLE = 1;
    public static final byte DISABLE = 0;

    /**
     * 通用 可用 / 禁用
     **/
    public static final int PUB_USABLE = 1;
    public static final int PUB_DISABLE = 0;

    /**
     * 默认金额
     */
    public static final Long ZERO = 0L;
    public static final String DEFAULT_SAFE_KEY = "123456";

    /**
     * 商户默认应用名
     */
    public static final String DEFAULT_APP_NAME = "默认应用";

    public interface WalletOperateType {
        String CASH_OUT = "CASH_OUT"; // 提现
        String PAY_ON_BEHALF = "PAY_ON_BEHALF"; // 代付
    }

    // 支付方式代码
    public interface PAY_WAY_CODE {
        String PIXCRED_GATE = "PIXCRED_GATE"; // 巴西网关支付支付;
        String CREDIT_CARD = "CREDIT_CARD"; // 信用卡支付;
        String WUDI_PAY = "WUDI_PAY"; // 无敌;
        String PK_BANK = "PKBANK_PAY"; // PKBANK;
        String GBPSD_PAY = "GBPSD_PAY"; // gbpsd;
        String PAY_WINGS = "PAY_WINGS"; // 无敌;

        String LX_PAY = "LX_PAY"; // LX;
    }

    // 钱包代码
    public interface WalletCode {
        String BRL_WALLET = "BRL_WALLET"; // 巴西币钱包;
        String CNY_WALLET = "CNY_WALLET"; // 人民币钱包;
        String USDT_WALLET = "USDT_WALLET"; // USDT钱包;
        String USD_WALLET = "USD_WALLET"; // 美元钱包;
        String EUR_WALLET = "EUR_WALLET"; // 欧元钱包;
    }

    /**
     * 钱包代码列表
     */
    public static final List<String> WalletCodeList =
            Arrays.asList(new String[]{"BRL_WALLET", "USD_WALLET", "CNY_WALLET", "USDT_WALLET", "EUR_WALLET"});

    // 商户签约状态
    public interface MchSignStatus {
        Integer ADDITIONAL_INFORMATION_TO_BE_PROVIDED = 1; // 待补充资料;
        Integer TO_BE_SIGNED = 2; // 待签约;
        Integer SIGNED = 3; // 已签约;
    }

    // 商户状态
    public interface MchStatus {
        Integer AVAILABLE = 1; // 正常;
        Integer DISABLE = 0; // 停用;
        Integer AUDIT_NOT_PASS = -1; // 审核不通过;
        Integer RETRY_AUDIT = -2; // 待审核;
    }

    // 支付数据包 类型
    public interface PAY_DATA_TYPE {
        String PAY_URL = "payurl"; // 跳转链接的方式 redirectUrl
        String FORM = "form"; // 表单提交
        String WX_APP = "wxapp"; // 微信app参数
        String ALI_APP = "aliapp"; // 支付宝app参数
        String YSF_APP = "ysfapp"; // 云闪付app参数
        String CODE_URL = "codeUrl"; // 二维码URL
        String CODE_IMG_URL = "codeImgUrl"; // 二维码图片显示URL
        String NONE = "none"; // 无参数
        String PIXCRED_GATE = "pixcredgate"; // 巴西支付网关参数
    }

    // 接口类型
    public interface IF_CODE {
        // String ALIPAY = "alipay"; // 支付宝官方支付
        // String WXPAY = "wxpay"; // 微信官方支付
        // String YSFPAY = "ysfpay"; // 云闪付开放平台
        // String XXPAY = "xxpay"; // 小新支付
        // String PPPAY = "pppay"; // Paypal 支付
        // String PLSPAY = "plspay"; // 计全支付plus
        String PIXCRED = "pixcred"; // pixcred
        String WUDIPAY = "wudipay"; // wudipay
        String GBPSDPAY = "gbpsdpay"; // gbpsdpay
        String PAYWINGS = "paywings"; // payWings
        // TODO  pz add 巴西
        String BRAZIL_PAY = "brazilpay"; // payWings
        String LX_PAY = "lxpay"; // payWings
    }


    // 提现审核状态, 审核状态：0-审核中, 1-审核通过, 2-审核拒绝, 3-已过期
    public interface TRANSFER_AUDIT_STATUS {
        Byte AUDITING = 0;
        Byte APPROVED = 1;
        Byte AUDIT_REJECTION = 2;
        Byte RECORD_EXPIRED = 3;
    }


    // // 路由规则
    // public interface PAY_INTERFACE_CONFIG_USE_RULE {
    //
    // /**
    // * 操作类型
    // */
    // Byte PAY_ON_BEHALF = 1; // 操作类型 代付
    // Byte OPERATE_TYPE_CASH_OUT = 2;// 操作类型 提现
    // Byte OPERATE_TYPE_CASH_IN = 3;// 操作类型 支付
    // }

    /**
     * 性别 1- 男， 2-女
     */
    public static final byte SEX_UNKNOWN = 0;
    public static final byte SEX_MALE = 1;
    public static final byte SEX_FEMALE = 2;

    /**
     * 默认密码
     */
    public static final String DEFAULT_PWD = "uupay666";

    /**
     * 登录认证类型
     **/
    public interface AUTH_TYPE {
        byte LOGIN_USER_NAME = 1; // 登录用户名
        byte TELPHONE = 2; // 手机号
        byte EMAIL = 3; // 邮箱

        byte WX_UNION_ID = 10; // 微信unionId
        byte WX_MINI = 11; // 微信小程序
        byte WX_MP = 12; // 微信公众号

        byte QQ = 20; // QQ
        byte GOOGLE_AUTH_CODE = 30; // 谷歌认证码
    }

    // 菜单类型
    public interface ENT_TYPE {

        String MENU_LEFT = "ML"; // 左侧显示菜单
        String MENU_OTHER = "MO"; // 其他菜单
        String PAGE_OR_BTN = "PB"; // 页面 or 按钮

    }

    public static final long TOKEN_TIME = 60 * 15; // 单位：s, 15分钟

    // access_token 名称
    public static final String ACCESS_TOKEN_NAME = "iToken";

    // 默认请求头必填参数
    public static final String DEFAULT_USER_AGENT_NAME = "http_user_agent";
    public static final String DEFAULT_USER_AGENT = "GLOBAL_PAYMENT";

    /** ！！不同系统请放置不同的redis库 ！！ **/
    /**
     * 缓存key: 当前用户所有用户的token集合 example: TOKEN_1001_HcNheNDqHzhTIrT0lUXikm7xU5XY4Q
     */
    public static final String CACHE_KEY_TOKEN = "TOKEN_%s_%s";

    public static String getCacheKeyToken(Long sysUserId, String uuid) {
        return String.format(CACHE_KEY_TOKEN, sysUserId, uuid);
    }

    // 代付凭证混淆 AES key
    public static final String TRANSFER_CERT_AES_KEY = "8FOufbkO7xcRiDXD";

    // FIXME pauUrl 相关 暂写此处
    public static final String PAY_URL_AES_KEY = "bOlYTr7LaIpyeD9d";
    public static final String PAY_URL_ADDRESS = "https://urlpay.66u6.com?data=";
//    public static final String PAY_URL_ADDRESS = "https://urlpay2.66u6.com?data=";

}
